home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / yerk / mps231ss.hqx / Mops source / Module source / printMod.txt < prev    next >
Text File  |  1993-02-01  |  2KB  |  86 lines

  1. \ print -- Printer support
  2. \ 10/10/84  rw  Version 1
  3. \ 11/22/84  cbd Added vectors for system printing
  4. \ 12/19/84  ssg Moved selectors; added formfeed;
  5. \                Added echovec stuff to +print, -print.
  6. \ 12/31/84  ssg Converted to module.
  7. \  2/13/85  cbd subclass of PBDrvr instead of File
  8. \ 12/19/85  cdn Renamed ff to np (new page), to avoid conflict with $ ff
  9. \  6/27/86  cdn Improved error message for Reset failure
  10. \ July 90   mrh Mops version.
  11.  
  12. Decimal
  13.  
  14. // drvr
  15.  
  16. scon    PRNAME ".Print"
  17.  
  18. :class    PRINTFCB  super{ PBdrvr }
  19.  
  20. :m PINIT:    prname name: self  -3 put: IORefNum  ;m
  21.  
  22. :m RESET:
  23.     7    put: csCode
  24.     0    put: IOBuffer
  25.     1    put: csp1     0 put:  csp2
  26.     addr: header  fcall PBControl
  27.     abort" Reset Failed; Printer Driver may be missing from disk"  ;m
  28.  
  29. :m FF:
  30.     7    put: csCode
  31.     0    put: IOBuffer
  32.     2    put: csp1  0 put: csp2
  33.     addr: header  fcall PBControl
  34.         abort" FF failed"  ;m
  35.  
  36. :m LF:
  37.     7    put: csCode
  38.     0    put: IOBuffer
  39.     3    put: csp1  0 put: csp2
  40.     addr: header  fcall PBControl
  41.         abort" LF failed"  ;m
  42.  
  43. :m OPEN:
  44.     pinit: self   open: super  reset: self
  45.     abort" Can't open printer"  ;m
  46.  
  47. :m PRINT:    \ ( addr len -- )
  48.     5  put: csCode
  49.     put:  IOBuffer   addr: header 28 +  !
  50.     addr: header  fcall PBControl
  51.         abort" Print failed"  ;m
  52.  
  53. :m PEMIT:    \ ( char -- )
  54.     pad c! pad 1 print: self  ;m
  55.  
  56. :m CLOSE:
  57.     ff: self  close: super
  58.         abort" Can't close printer"  ;m
  59.  
  60. ;class
  61.  
  62. printFcb  PRINTER
  63.  
  64. : +PRINT        \ Enables simultaneous printing of Neon screen text
  65.         \ Note: this definition must precede PEMIT etc, so we
  66.         \ can tick the exported versions of these words.  Vital so
  67.         \ that the module gets called properly from the vectors!!
  68.  
  69.     open: printer  ['] pemit -> pemitvec  ['] echo -> echovec
  70.     ['] ptype -> ptypevec   ['] pcr -> pcrvec  ;
  71.  
  72. : -PRINT
  73.     0 -> pemitvec  0 -> echovec  0 -> ptypevec  0 -> pcrvec
  74.     drop: printMod  ;
  75.  
  76.  
  77. : PINIT        open: printer   ;
  78. : PEMIT        pemit: printer  ;
  79. : PTYPE        print: printer  ;
  80. : PCR        lf:    printer  $ 0a ( ASCII linefeed ) pemit  ;
  81. : NP        ff: printer  ;
  82.  
  83. : ECHO    \ ( c -- )  Echoes to printer AND screen.
  84.     dup  emitvec  pemitvec  ;
  85.  
  86.